package com.study.kt._01grammar._02oop

/**
 * 任意字段都有init
 */
fun main() {
    //调用了次构造函数，次构造函数调用了主构造函数
    var s = Stu("fauks", 12, "123")
    println(s.phone)
}

class MyClass constructor(name: String)

// 如果类没有注解、可见修饰符修饰，constructor关键字可以省略
class Stu(name: String, age: Int) {
    //每次创建对象都会调用init方法,用于初始化操作
    //调用次构造函数也会执行init方法
    //init最终翻译为java的类中一个字段，在主构造函数中调用打印的等操作
    init {
        println("创建了Stu")
    }

    var phone: String = ""
    private var address: String = ""

    //先调用init函数，在执行次构造函数
    // 次构造函数必须直接或者间接调用主构造，this(name, age) 直接调用
    constructor(name: String, age: Int, phone: String) : this(name, age) {
        this.phone = phone
    }

    // 先调用第一个次构造，次构造再调用主构造
    constructor(name: String, age: Int, phone: String, address: String) : this(name, age, phone) {
        this.address = address
    }
}